Participant info

age_group N meanAge sdAge nFemale
Children 17 11.32 0.8799 8
Adolescents 29 15.37 1.518 14
Adults 46 22.11 2.36 25

Agency task: Machine selection

Model: Optimal machine choices across trials by condition and age

## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: stage_2_acc ~ condition * zTrialOfCond * (zAge) + (condition * 
## Model:     zTrialOfCond | subID)
## Data: banditTask.filtered
## Df full model: 18
##                        Effect df     Chisq p.value
## 1                   condition  1 20.86 ***   <.001
## 2                zTrialOfCond  1 60.59 ***   <.001
## 3                        zAge  1      1.46    .227
## 4      condition:zTrialOfCond  1      0.08    .781
## 5              condition:zAge  1      0.21    .650
## 6           zTrialOfCond:zAge  1      1.46    .226
## 7 condition:zTrialOfCond:zAge  1      0.09    .770
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: binomial  ( logit )
## Formula: stage_2_acc ~ condition * zTrialOfCond * (zAge) + (condition *  
##     zTrialOfCond | subID)
##    Data: data
## Control: glmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 1e+06))
## 
##      AIC      BIC   logLik deviance df.resid 
##   8674.1   8807.6  -4319.1   8638.1    12262 
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -16.3075   0.0788   0.1984   0.3889   2.4780 
## 
## Random effects:
##  Groups Name                    Variance Std.Dev. Corr             
##  subID  (Intercept)             2.4576   1.5677                    
##         condition1              0.3558   0.5965   -0.09            
##         zTrialOfCond            0.4269   0.6534    0.77  0.01      
##         condition1:zTrialOfCond 0.2272   0.4766    0.18  0.36  0.13
## Number of obs: 12280, groups:  subID, 92
## 
## Fixed effects:
##                              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                   2.37787    0.17242  13.792  < 2e-16 ***
## condition1                   -0.41517    0.08149  -5.095  3.5e-07 ***
## zTrialOfCond                  0.71264    0.08315   8.571  < 2e-16 ***
## zAge                          0.20570    0.16936   1.215    0.225    
## condition1:zTrialOfCond      -0.01845    0.06823  -0.270    0.787    
## condition1:zAge              -0.03405    0.07434  -0.458    0.647    
## zTrialOfCond:zAge             0.09524    0.07818   1.218    0.223    
## condition1:zTrialOfCond:zAge  0.01863    0.06182   0.301    0.763    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) cndtn1 zTrlOC zAge   cn1:TOC cnd1:A zTOC:A
## condition1  -0.108                                           
## zTrialOfCnd  0.713 -0.045                                    
## zAge         0.021 -0.003  0.033                             
## cndtn1:zTOC  0.096  0.473 -0.007 -0.001                      
## condtn1:zAg -0.003  0.091 -0.002 -0.096  0.079               
## zTrlOfCnd:A  0.034 -0.003  0.067  0.715 -0.009  -0.014       
## cndt1:TOC:A -0.002  0.078 -0.009  0.131  0.091   0.397  0.044

Plot: Proportion optimal machine selections across age groups and trials

Agency task: Agency decisions

Model: Agency decisions by VoC

## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: agency ~ zVoC * zTrialOfCond * zAge + (zVoC * zTrialOfCond | 
## Model:     subID)
## Data: banditTask
## Df full model: 18
##                   Effect df      Chisq p.value
## 1                   zVoC  1 144.39 ***   <.001
## 2           zTrialOfCond  1     3.56 +    .059
## 3                   zAge  1       0.01    .906
## 4      zVoC:zTrialOfCond  1  50.21 ***   <.001
## 5              zVoC:zAge  1     4.17 *    .041
## 6      zTrialOfCond:zAge  1       2.53    .111
## 7 zVoC:zTrialOfCond:zAge  1    9.59 **    .002
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: binomial  ( logit )
## Formula: agency ~ zVoC * zTrialOfCond * zAge + (zVoC * zTrialOfCond |  
##     subID)
##    Data: data
## Control: glmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 1e+06))
## 
##      AIC      BIC   logLik deviance df.resid 
##  26597.3  26746.3 -13280.7  26561.3    28962 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -33.889  -0.549   0.190   0.543  13.837 
## 
## Random effects:
##  Groups Name              Variance Std.Dev. Corr             
##  subID  (Intercept)       1.86467  1.3655                    
##         zVoC              0.45871  0.6773   -0.18            
##         zTrialOfCond      0.23503  0.4848    0.63 -0.02      
##         zVoC:zTrialOfCond 0.09566  0.3093   -0.02  0.47 -0.34
## Number of obs: 28980, groups:  subID, 92
## 
## Fixed effects:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)             0.74203    0.14391   5.156 2.52e-07 ***
## zVoC                    1.42145    0.07444  19.096  < 2e-16 ***
## zTrialOfCond            0.10238    0.05418   1.890  0.05879 .  
## zAge                   -0.01696    0.14368  -0.118  0.90603    
## zVoC:zTrialOfCond       0.32578    0.03909   8.335  < 2e-16 ***
## zVoC:zAge               0.15339    0.07390   2.076  0.03792 *  
## zTrialOfCond:zAge      -0.08631    0.05364  -1.609  0.10759    
## zVoC:zTrialOfCond:zAge  0.12286    0.03816   3.219  0.00129 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) zVoC   zTrlOC zAge   zVC:zTOC zVC:zA zTOC:A
## zVoC        -0.157                                            
## zTrialOfCnd  0.603 -0.002                                     
## zAge         0.003  0.000  0.001                              
## zVC:zTrlOfC -0.005  0.431 -0.219  0.001                       
## zVoC:zAge    0.000  0.015  0.002 -0.161  0.013                
## zTrlOfCnd:A  0.001  0.001  0.012  0.604 -0.005   -0.006       
## zVC:zTrOC:A  0.001  0.013 -0.004 -0.008  0.041    0.427 -0.242

Model: Agency decisions when VoC = 0

## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: agency ~ zAge + (1 | subID)
## Data: banditTask.vocZeroTrials
## Df full model: 3
##   Effect df Chisq p.value
## 1   zAge  1  0.00    .961
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: binomial  ( logit )
## Formula: agency ~ zAge + (1 | subID)
##    Data: data
## Control: glmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 1e+06))
## 
##      AIC      BIC   logLik deviance df.resid 
##   4304.7   4323.7  -2149.4   4298.7     4137 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -4.2769 -0.6929  0.3759  0.6286  2.1169 
## 
## Random effects:
##  Groups Name        Variance Std.Dev.
##  subID  (Intercept) 1.24     1.113   
## Number of obs: 4140, groups:  subID, 92
## 
## Fixed effects:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  1.246212   0.124404  10.017   <2e-16 ***
## zAge        -0.006025   0.123891  -0.049    0.961    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##      (Intr)
## zAge -0.002

Plot: Sensitivity to the value of choice

Plot: Sensitivity to value of control with continuous age

Summary stats: Sensitivity to value of control

Choice preference task

Choice preference task: summary stats

Model: Choice preference task accuracy

## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: correct ~ zDiff * zAge + (zDiff | subID)
## Data: rewardSense.filtered
## Df full model: 7
##       Effect df     Chisq p.value
## 1      zDiff  1 79.85 ***   <.001
## 2       zAge  1      0.78    .376
## 3 zDiff:zAge  1      1.36    .244
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1

Explicit reward knowledge task

Explicit reward knowledge task: summary stats

Model: Explicit reward knowledge by age and true probabilities

## Mixed Model Anova Table (Type 3 tests, S-method)
## 
## Model: error ~ zTrueProb * zAge + (1 | subID)
## Data: explicitKnow.filtered
##           Effect        df         F p.value
## 1      zTrueProb 1, 456.86 21.67 ***   <.001
## 2           zAge  1, 89.88      0.04    .845
## 3 zTrueProb:zAge 1, 456.86      0.36    .548
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1

Plot: Explicit reward knowledge

LS0tCnRpdGxlOiAiVm9DIEFuYWx5c2VzIFBhcnQgMjogUmVncmVzc2lvbnMiCmRhdGU6IDEvOC8yNApvdXRwdXQ6CiAgICBodG1sX2RvY3VtZW50OgogICAgICAgIGRmX3ByaW50OiAncGFnZWQnCiAgICAgICAgdG9jOiB0cnVlCiAgICAgICAgdG9jX2Zsb2F0OgogICAgICAgICAgICBjb2xsYXBzZWQ6IGZhbHNlCiAgICAgICAgICAgIHNtb290aF9zY3JvbGw6IHRydWUKICAgICAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlCiAgICAgICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgICAgIHNlbGZfY29udGFpbmVkOiB0cnVlCi0tLQpgYGB7ciBjaHVuayBzZXR0aW5ncywgaW5jbHVkZSA9IEZBTFNFfQojIHNldCBjaHVuayBzZXR0aW5ncwprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCAKICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgPSBGQUxTRSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KGRwaT02MDApCmtuaXRyOjpvcHRzX2tuaXQkc2V0KHJvb3QuZGlyID0gcnByb2pyb290OjpmaW5kX3JzdHVkaW9fcm9vdF9maWxlKCkpCmBgYAogICAgICAgICAgICAgICAgICAgICAgCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQoKIyBsaXN0IGFsbCBwYWNrYWdlcyByZXF1aXJlZCBmb3IgdGhlIGFuYWx5c2lzCmxpc3Rfb2ZfcGFja2FnZXMgPC0gYygidGlkeXZlcnNlIiwgImFmZXgiLCAicGFuZGVyIikKCiMgbG9hZCBhbGwgcGFja2FnZXMgCmxhcHBseShsaXN0X29mX3BhY2thZ2VzLCBsaWJyYXJ5LCBjaGFyYWN0ZXIub25seSA9IFRSVUUpCgojIGFkZCB0aGVtZSBmb3IgcGxvdHRpbmcKdm9jX3RoZW1lIDwtIGZ1bmN0aW9uICgpIHsKICB0aGVtZSgKICAgIHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiwgY29sb3I9ImdyYXk3NSIpLAogICAgcGFuZWwuYmFja2dyb3VuZCAgPSBlbGVtZW50X2JsYW5rKCksCiAgICBwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCksIAogICAgbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbD0idHJhbnNwYXJlbnQiLCBjb2xvdXI9TkEpLAogICAgbGVnZW5kLmtleSA9IGVsZW1lbnRfcmVjdChmaWxsPSJ0cmFuc3BhcmVudCIsIGNvbG91cj1OQSksCiAgICBsaW5lID0gZWxlbWVudF9ibGFuaygpLAogICAgYXhpcy50aWNrcyA9IGVsZW1lbnRfbGluZShjb2xvcj0iZ3JheTc1IiksCiAgICB0ZXh0PWVsZW1lbnRfdGV4dChmYW1pbHk9IkF2ZW5pciIpLAogICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksCiAgICBheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksCiAgICB0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLAogICAgc3RyaXAuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZT0xMikKICApCn0KCmNvbG9yMSA9ICIjMDBiNGQ4Igpjb2xvcjIgPSAiIzAwNzdiNiIKY29sb3IzID0gIiMwMzA0NWUiCgoKI3otc2NvcmUgZnVuY3Rpb24Kc2NhbGVfdGhpcyA8LSBmdW5jdGlvbih4KXsKICAoeCAtIG1lYW4oeCwgbmEucm09VFJVRSkpIC8gc2QoeCwgbmEucm09VFJVRSkKfQoKYGBgCgojIFBhcnRpY2lwYW50IGluZm8KYGBge3IgcGFydGljaXBhbnRzIHBsb3R9CgojbG9hZCBkZW1vZ3JhcGhpYyBpbmZvCnN1Yl9pbmZvIDwtIHJlYWRfY3N2KCdkYXRhL3ZvY19zdWJfaW5mby5jc3YnKSAKCiMgcGxvdCBoaXN0b2dyYW0gb2YgbWFsZSBhbmQgZmVtYWxlIHBhcnRpY2lwYW50cwpzdWJfaW5mbyAlPiUgbXV0YXRlKHdob2xlX2FnZSA9IGZsb29yKGFnZSkpICU+JSAKICAgIGdyb3VwX2J5KHN1YklELCBnZW5kZXIsIHdob2xlX2FnZSkgJT4lIAogICAgZGlzdGluY3Qoc3ViSUQpICU+JSAKICAgIGdncGxvdCguLCBhZXMoeD13aG9sZV9hZ2UsIGZpbGw9Z2VuZGVyKSkgKwogICAgZ2VvbV9oaXN0b2dyYW0oYmlud2lkdGggPSAxLCBjb2xvcj0id2hpdGUiKSArCiAgICBzY2FsZV9maWxsX21hbnVhbChuYW1lPSJTZXgiLAogICAgICAgICAgICAgICAgICAgIGxhYmVscz1jKCJGZW1hbGUiLCAiTWFsZSIpLAogICAgICAgICAgICAgICAgICAgIHZhbHVlcz1jKGNvbG9yMSwgY29sb3IyKSkgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IGMoMiw0LDYsOCwxMCksCiAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCIyIiwiNCIsIjYiLCI4IiwiMTAiKSwKICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoMCwxMCkpICsKICAgIHhsYWIoIkFnZSIpICsKICAgIHlsYWIoIkNvdW50IikgKwogICAgdm9jX3RoZW1lKCkKYGBgCgpgYGB7ciBwYXJ0aWNpcGFudCBpbmZvfQoKI2xvYWQgZGVtb2dyYXBoaWMgaW5mbwpzdWJfaW5mbyA8LSByZWFkX2NzdignZGF0YS92b2Nfc3ViX2luZm8uY3N2JykgJT4lCiAgICBtdXRhdGUoYWdlX2dyb3VwID0gY2FzZV93aGVuKGFnZSA8IDEzIH4gIkNoaWxkcmVuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlID4gMTIuOTkgJiBhZ2UgPCAxOCB+ICJBZG9sZXNjZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZSA+IDE3Ljk5IH4gIkFkdWx0cyIpKQoKc3ViX2luZm8kYWdlX2dyb3VwIDwtIGZhY3RvcihzdWJfaW5mbyRhZ2VfZ3JvdXAsIGxldmVscyA9IGMoIkNoaWxkcmVuIiwgIkFkb2xlc2NlbnRzIiwgIkFkdWx0cyIpKQoKIyBhZ2UgZ3JvdXAgaW5mb3JtYXRpb24KYWdlX2dyb3VwX2luZm8gPC0gc3ViX2luZm8gJT4lCiAgICBncm91cF9ieShhZ2VfZ3JvdXApICU+JQogICAgc3VtbWFyaXplKE4gPSBuKCksIAogICAgICAgICAgICAgIG1lYW5BZ2UgPSBtZWFuKGFnZSksCiAgICAgICAgICAgICAgc2RBZ2UgPSBzZChhZ2UpLAogICAgICAgICAgICAgIG5GZW1hbGUgPSBzdW0oZ2VuZGVyID09ICJGIikKICAgICAgICAgICAgICApCgpwYW5kZXIoYWdlX2dyb3VwX2luZm8pCmBgYAoKCiMgQWdlbmN5IHRhc2s6IE1hY2hpbmUgc2VsZWN0aW9uCiMjIE1vZGVsOiBPcHRpbWFsIG1hY2hpbmUgY2hvaWNlcyBhY3Jvc3MgdHJpYWxzIGJ5IGNvbmRpdGlvbiBhbmQgYWdlCmBgYHtyIG1hY2hpbmUgY2hvaWNlcyBhY3Jvc3MgdHJpYWxzIGJ5IGFnZX0KCiMgUmVhZCBpbiBkYXRhCmJhbmRpdFRhc2sgPC0gcmVhZF9jc3YoJ2RhdGEvcHJvY2Vzc2VkL2JhbmRpdF90YXNrLmNzdicpIAoKI2NvbWJpbmUgd2l0aCBwYXJ0aWNpcGFudCBhZ2UKYmFuZGl0VGFzayA8LSBmdWxsX2pvaW4oYmFuZGl0VGFzaywgc3ViX2luZm8sIGJ5ID0gYygic3ViSUQiKSkKCiMgRmlsdGVyIGRhdGEgdG8gaGF2ZSBvbmx5IHRyaWFscyB3aGVyZSBwZW9wbGUgY2hvb3NlIGFnZW5jeSBhbmQgZXhjbHVkZSB0cmlhbHMgd2l0aCA1MC01MCBjb25kaXRpb24gCmJhbmRpdFRhc2suZmlsdGVyZWQgPC0gYmFuZGl0VGFzayAlPiUgCiAgICBmaWx0ZXIoYWdlbmN5ID09IDEsIGNvbmRpdGlvbiE9ImJhbmRpdHM1MDUwIikKCiMgU2NhbGUgY29udGludW91cyB2YXJpYWJsZXMKYmFuZGl0VGFzay5maWx0ZXJlZCR6QWdlIDwtIHNjYWxlX3RoaXMoYmFuZGl0VGFzay5maWx0ZXJlZCRhZ2UpCmJhbmRpdFRhc2suZmlsdGVyZWQkelRyaWFsT2ZDb25kIDwtIHNjYWxlX3RoaXMoYmFuZGl0VGFzay5maWx0ZXJlZCR0cmlhbE9mQ29uZCkKCiMgTWl4ZWQtZWZmZWN0cyBsb2dpc3RpYyByZWdyZXNzaW9uIG1vZGVsCmNvcnJlY3RfYnlDb25kaXRpb25UcmlhbEFnZS5taXhlZCA8LSBtaXhlZChzdGFnZV8yX2FjYyB+IGNvbmRpdGlvbip6VHJpYWxPZkNvbmQqKHpBZ2UpICsgKGNvbmRpdGlvbip6VHJpYWxPZkNvbmR8c3ViSUQpLCAKICAgICAgICAgICAgICAgIGRhdGEgPSBiYW5kaXRUYXNrLmZpbHRlcmVkLAogICAgICAgICAgICAgICAgZmFtaWx5ID0gYmlub21pYWwsIAogICAgICAgICAgICAgICAgbWV0aG9kID0gIkxSVCIsCiAgICAgICAgICAgICAgICBjb250cm9sPWdsbWVyQ29udHJvbChvcHRpbWl6ZXI9ImJvYnlxYSIsIG9wdEN0cmw9bGlzdChtYXhmdW49MWU2KSkpCgojZGlzcGxheSBtb2RlbCBzdGF0cwpjb3JyZWN0X2J5Q29uZGl0aW9uVHJpYWxBZ2UubWl4ZWQgCnN1bW1hcnkoY29ycmVjdF9ieUNvbmRpdGlvblRyaWFsQWdlLm1peGVkKQpgYGAKCiMjIFBsb3Q6IFByb3BvcnRpb24gb3B0aW1hbCBtYWNoaW5lIHNlbGVjdGlvbnMgYWNyb3NzIGFnZSBncm91cHMgYW5kIHRyaWFscwpgYGB7ciBwbG90IGJhbmRpdCBjaG9pY2VzIGFjcm9zcyB0cmlhbHMsIHdpZHRoID0gNywgaGVpZ2h0ID0gNCwgdW5pdCA9ICJpbiJ9CgpiYW5kaXRUYXNrU3ViTWVhbnMgPC0gYmFuZGl0VGFzayAlPiUKICAgIG11dGF0ZShibG9jayA9IGZsb29yKCh0cmlhbC0xKS8yMSkgKyAxKSAlPiUKICAgIGZpbHRlcihhZ2VuY3k9PTEsIGNvbmRpdGlvbiE9ImJhbmRpdHM1MDUwIikgJT4lIAogICAgZ3JvdXBfYnkoY29uZGl0aW9uLCBibG9jaywgYWdlX2dyb3VwLCBzdWJJRCkgJT4lIAogICAgc3VtbWFyaXplKHBjdENvcnJlY3QgPSBtZWFuKHN0YWdlXzJfYWNjKSkKCmJhbmRpdFRhc2tNZWFucyA8LSBiYW5kaXRUYXNrU3ViTWVhbnMgJT4lCiAgICBncm91cF9ieShjb25kaXRpb24sIGJsb2NrLCBhZ2VfZ3JvdXApICU+JSAKICAgIHN1bW1hcml6ZShwY3RDb3JyID0gbWVhbihwY3RDb3JyZWN0KSwKICAgICAgICAgICAgICBzZSA9IHNkKHBjdENvcnJlY3QpL3NxcnQobigpKSkKCm1hY2hpbmVTZWxlY3Rpb25QbG90IDwtIGdncGxvdChiYW5kaXRUYXNrTWVhbnMsIGFlcyh4PWJsb2NrLCB5PXBjdENvcnIsIGNvbG9yPWNvbmRpdGlvbikpICsKICAgIGZhY2V0X3dyYXAofmFnZV9ncm91cCkgKwogICAgZ2VvbV9wb2ludChzaXplID0gMykgKwogICAgZ2VvbV9qaXR0ZXIoZGF0YSA9IGJhbmRpdFRhc2tTdWJNZWFucywgIGFlcyh4ID0gYmxvY2ssIHkgPSBwY3RDb3JyZWN0LCBjb2xvcj1jb25kaXRpb24pLCBzaXplID0gLjUpICsKICAgIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFlcyhmaWxsID0gY29uZGl0aW9uKSkgKwogICAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gLjUsIGxpbmV0eXBlPSJkYXNoZWQiKSArCiAgICB5bGFiKCJQcm9wb3J0aW9uIE9wdGltYWwgTWFjaGluZSBTZWxlY3Rpb25zIikgKwogICAgeGxhYigiQmxvY2siKSArCiAgICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gYyg0LCA4LCAxMikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKG5hbWU9IkNvbmRpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM9YygiNzAvMzAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjkwLzEwIiksCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9Yyhjb2xvcjEsIGNvbG9yMyksIAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9sZWdlbmQocmV2ZXJzZT1UUlVFKSkgKwogICAgc2NhbGVfY29sb3JfbWFudWFsKG5hbWU9IkNvbmRpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM9YygiNzAvMzAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjkwLzEwIiksCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9Yyhjb2xvcjEsIGNvbG9yMyksCiAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfbGVnZW5kKHJldmVyc2U9VFJVRSkpICsKICAgIHZvY190aGVtZSgpICsKICAgIHRoZW1lKHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZT0xMikpCm1hY2hpbmVTZWxlY3Rpb25QbG90CmBgYAoKCiMgQWdlbmN5IHRhc2s6IEFnZW5jeSBkZWNpc2lvbnMgCiMjIE1vZGVsOiBBZ2VuY3kgZGVjaXNpb25zIGJ5IFZvQwpgYGB7ciB2b2MgbW9kZWx9Cgojc2NhbGUgdm9jCmJhbmRpdFRhc2skelZvQyA8LSBzY2FsZV90aGlzKGJhbmRpdFRhc2skdm9jKQpiYW5kaXRUYXNrJHpUcmlhbE9mQ29uZCA8LSBzY2FsZV90aGlzKGJhbmRpdFRhc2skdHJpYWxPZkNvbmQpCmJhbmRpdFRhc2skekFnZSA8LSBzY2FsZV90aGlzKGJhbmRpdFRhc2skYWdlKQoKIyBwcmVkaWN0IGFnZW5jeSBjaG9pY2UgZnJvbSB1dGlsaXR5IG9mIGNvbnRyb2wsIHRyaWFsLCBsaW5lYXIgYWdlCmFnZW5jeV9ieVZPQ1RyaWFsQWdlLm1peGVkID0gbWl4ZWQoYWdlbmN5IH4gelZvQyAqIHpUcmlhbE9mQ29uZCAqIHpBZ2UgKyAoelZvQyAqIHpUcmlhbE9mQ29uZHxzdWJJRCksIAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gYmFuZGl0VGFzaywgCiAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseSA9IGJpbm9taWFsLCAKICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gIkxSVCIsIGNvbnRyb2w9Z2xtZXJDb250cm9sKG9wdGltaXplcj0iYm9ieXFhIixvcHRDdHJsPWxpc3QobWF4ZnVuPTFlNikpKSAKCiNkaXNwbGF5IHN0YXRzCmFnZW5jeV9ieVZPQ1RyaWFsQWdlLm1peGVkCnN1bW1hcnkoYWdlbmN5X2J5Vk9DVHJpYWxBZ2UubWl4ZWQpCmBgYAoKIyMgTW9kZWw6IEFnZW5jeSBkZWNpc2lvbnMgd2hlbiBWb0MgPSAwCmBgYHtyIHZvYyAwIG1vZGVsfQoKI2ZpbHRlciBkYXRhCmJhbmRpdFRhc2sudm9jWmVyb1RyaWFscyA8LSBiYW5kaXRUYXNrICU+JQogICAgZmlsdGVyKHZvYyA9PSAwKQoKI3NjYWxlIGFnZQpiYW5kaXRUYXNrLnZvY1plcm9UcmlhbHMkekFnZSA8LSBzY2FsZShiYW5kaXRUYXNrLnZvY1plcm9UcmlhbHMkYWdlKQoKIyBwcmVkaWN0IGFnZW5jeSBjaG9pY2UgZnJvbSB1dGlsaXR5IG9mIGNvbnRyb2wsIHRyaWFsLCBsaW5lYXIgYWdlCmFnZW5jeV92b2NaZXJvX2J5QWdlLm1peGVkID0gbWl4ZWQoYWdlbmN5IH4gIHpBZ2UgKyAoMXxzdWJJRCksIAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gYmFuZGl0VGFzay52b2NaZXJvVHJpYWxzLCAKICAgICAgICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gYmlub21pYWwsIAogICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSAiTFJUIiwgY29udHJvbD1nbG1lckNvbnRyb2wob3B0aW1pemVyPSJib2J5cWEiLCBvcHRDdHJsPWxpc3QobWF4ZnVuPTFlNikpKSAKCiNkaXNwbGF5IHN0YXRzCmFnZW5jeV92b2NaZXJvX2J5QWdlLm1peGVkCnN1bW1hcnkoYWdlbmN5X3ZvY1plcm9fYnlBZ2UubWl4ZWQpCmBgYAoKIyMgUGxvdDogU2Vuc2l0aXZpdHkgdG8gdGhlIHZhbHVlIG9mIGNob2ljZQpgYGB7ciB2b2MgcGxvdCwgZmlnLmhlaWdodCA9IDQsIGZpZy53aWR0aCA9IDcsIHVuaXQgPSAiaW4ifQoKVm9DX3Bsb3Rfc3ViX21lYW5zIDwtIGJhbmRpdFRhc2sgJT4lIAogICAgbXV0YXRlKHRhc2tIYWxmID0gY2FzZV93aGVuKHRyaWFsIDwgMTU4IH4gIkZpcnN0IEhhbGYgb2YgVGFzayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYWwgPiAxNTcgfiAiU2Vjb25kIEhhbGYgb2YgVGFzayIpKSAlPiUKICAgIGdyb3VwX2J5KGFnZV9ncm91cCwgdGFza0hhbGYsIHZvYywgc3ViSUQpICU+JQogICAgc3VtbWFyaXplKG1lYW5TdWJBZ2VuY3kgPSBtZWFuKGFnZW5jeSwgbmEucm0gPSBUKSkKClZvQ19wbG90X21lYW5zIDwtIFZvQ19wbG90X3N1Yl9tZWFucyAlPiUgCiAgICBncm91cF9ieShhZ2VfZ3JvdXAsIHRhc2tIYWxmLCB2b2MpICU+JQogICAgc3VtbWFyaXplKG1lYW5BZ2VuY3kgPSBtZWFuKG1lYW5TdWJBZ2VuY3ksIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgc2VBZ2VuY3kgPSBzZChtZWFuU3ViQWdlbmN5IC8gc3FydChuKCkpKSkKCiNwbG90ClZvQ19wbG90IDwtIGdncGxvdChWb0NfcGxvdF9tZWFucywgYWVzKHggPSB2b2MsIHkgPSBtZWFuQWdlbmN5LCBjb2xvciA9IGFnZV9ncm91cCkpICsKICAgIGZhY2V0X3dyYXAofnRhc2tIYWxmKSArCiAgICBnZW9tX3BvaW50KGFlcyhjb2xvciA9IGFnZV9ncm91cCkpICsgCiAgICBnZW9tX2Vycm9yYmFyKGFlcyhjb2xvciA9IGFnZV9ncm91cCwgeW1pbiA9IG1lYW5BZ2VuY3kgLSBzZUFnZW5jeSwgeW1heCA9IG1lYW5BZ2VuY3kgKyBzZUFnZW5jeSksIHdpZHRoID0gLjEpICsgCiAgICBnZW9tX2xpbmUoYWVzKGdyb3VwID0gYWdlX2dyb3VwKSkgKwogICAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcz1jKCIjODQzNDdDIiwgIiNCNDA0MjQiLCAiI0VCNkQxRSIpLCBuYW1lID0gIkFnZSBHcm91cCIpICsKICAgIHhsYWIoIlZhbHVlIG9mIENob2ljZSAoVm9DKSIpICsKICAgIHlsYWIoIlByb3BvcnRpb24gQWdlbmN5IENob2ljZXMiKSArCiAgICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAuNSwgbGluZXR5cGUgPSAiZGFzaGVkIikgKwogICAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gMCwgbGluZXR5cGUgPSAiZGFzaGVkIikgKwogICAgdm9jX3RoZW1lKCkKVm9DX3Bsb3QKYGBgCgojIyBQbG90OiBTZW5zaXRpdml0eSB0byB2YWx1ZSBvZiBjb250cm9sIHdpdGggY29udGludW91cyBhZ2UgCmBgYHtyIHZvYyBwbG90IGNvbnRpbnVvdXMgYWdlLCBmaWcuaGVpZ2h0ID0gMy45LCBmaWcud2lkdGggPSAzLCB1bml0ID0gImluIn0KCiNydW4gbW9kZWwgd2l0aG91dCBhZ2UgdG8gZ2V0IHJhbmRvbSBlZmZlY3RzIGZvciBlYWNoIHBhcnRpY2lwYW50CmFnZW5jeV9ieVZPQ1RyaWFsLmdsbWVyID0gbWl4ZWQoYWdlbmN5IH4gelZvQyAqIHpUcmlhbE9mQ29uZCArICh6Vm9DICogelRyaWFsT2ZDb25kfHN1YklEKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBiYW5kaXRUYXNrLCAKICAgICAgICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gYmlub21pYWwsIAogICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSAiTFJUIiwgY29udHJvbD1nbG1lckNvbnRyb2wob3B0aW1pemVyPSJib2J5cWEiLG9wdEN0cmw9bGlzdChtYXhmdW49MWU2KSksCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA9ICJtZXJNb2QiKSAKCiNnZXQgZml4ZWQgZWZmZWN0IG9mIHpWb0MKVm9DX2ZpeGVkZWZmIDwtIGFzLmRhdGEuZnJhbWUoY29lZihzdW1tYXJ5KGFnZW5jeV9ieVZPQ1RyaWFsLmdsbWVyKSkpJEVzdGltYXRlWzJdClZvQ19pbnRfZml4ZWRlZmYgPC0gYXMuZGF0YS5mcmFtZShjb2VmKHN1bW1hcnkoYWdlbmN5X2J5Vk9DVHJpYWwuZ2xtZXIpKSkkRXN0aW1hdGVbNF0KCiNnZXQgcmFuZG9tIGVmZmVjdHMKVm9DX2VmZmVjdHMgPC0gcmFuZWYoYWdlbmN5X2J5Vk9DVHJpYWwuZ2xtZXIpJHN1YklEICU+JQogICAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJzdWJJRCIpCgojY29tYmluZSB3aXRoIGFnZQpWb0Nfc3ViRWZmZWN0cyA8LSBiYW5kaXRUYXNrICU+JQogICAgc2VsZWN0KHN1YklELCBhZ2UpICU+JSAKICAgIHVuaXF1ZSgpICU+JQogICAgbGVmdF9qb2luKFZvQ19lZmZlY3RzLCBieSA9IGMoInN1YklEIikpICU+JQogICAgbXV0YXRlKHpWb0NGdWxsID0gelZvQyArIFZvQ19maXhlZGVmZiwgCiAgICAgICAgICAgaW50RnVsbCA9IGB6Vm9DOnpUcmlhbE9mQ29uZGAgKyBWb0NfaW50X2ZpeGVkZWZmKQoKI3Bsb3QgYWdlIGJ5IFZvQyBlZmZlY3QKVm9DX3Bsb3RfY29udGludW91c0FnZSA8LSBnZ3Bsb3QoVm9DX3N1YkVmZmVjdHMsIGFlcyh4ID0gYWdlLCB5ID0gelZvQ0Z1bGwpKSArCiAgICBnZW9tX3BvaW50KGNvbG9yID0gIiNFQjZEMUUiKSArIAogICAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgY29sb3IgPSAiIzg0MzQ3QyIsIGZpbGwgPSAiIzg0MzQ3QyIpICsKICAgIHZvY190aGVtZSgpICsgCiAgICB4bGFiKCJBZ2UiKSArCiAgICB5bGFiKCJWb0MgRWZmZWN0IikgClZvQ19wbG90X2NvbnRpbnVvdXNBZ2UKCiNwbG90IGFnZSBieSBWb0MgeCB0cmlhbCBlZmZlY3QKVm9DX3Bsb3RfY29udGludW91c0FnZVRyaWFsIDwtIGdncGxvdChWb0Nfc3ViRWZmZWN0cywgYWVzKHggPSBhZ2UsIHkgPSBpbnRGdWxsKSkgKwogICAgZ2VvbV9wb2ludChjb2xvciA9ICIjRUI2RDFFIikgKyAKICAgIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGNvbG9yID0gIiM4NDM0N0MiLCBmaWxsID0gIiM4NDM0N0MiKSArCiAgICB2b2NfdGhlbWUoKSArIAogICAgeGxhYigiQWdlIikgKwogICAgeWxhYigiVm9DIHggVHJpYWwgRWZmZWN0IikgClZvQ19wbG90X2NvbnRpbnVvdXNBZ2VUcmlhbApgYGAKCgojIyBTdW1tYXJ5IHN0YXRzOiBTZW5zaXRpdml0eSB0byB2YWx1ZSBvZiBjb250cm9sCmBgYHtyIHZvYyBzdW1tYXJ5IHN0YXRzfQoKIyBXaGF0IHByb3BvcnRpb24gb2YgdHJpYWxzIGRpZCBwYXJ0aWNpcGFudHMgY2hvb3NlIGFnZW5jeSB3aGVuIFZvQyB3YXMgMD8KVm9DX3plcm9fbWVhbnNfc3ViIDwtIGJhbmRpdFRhc2sgJT4lIAogICAgZmlsdGVyKHZvYyA9PSAwKSAlPiUKICAgIGdyb3VwX2J5KHN1YklELCBhZ2VfZ3JvdXApICU+JQogICAgc3VtbWFyaXplKG1lYW5TdWJBZ2VuY3kgPSBtZWFuKGFnZW5jeSwgbmEucm0gPSBUKSkKClZvQ196ZXJvX21lYW5zIDwtIFZvQ196ZXJvX21lYW5zX3N1YiAlPiUKICAgIHN1bW1hcml6ZShtZWFuQWdlbmN5ID0gbWVhbihtZWFuU3ViQWdlbmN5LCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNlQWdlbmN5ID0gc2QobWVhblN1YkFnZW5jeSAvIHNxcnQobigpKSkpClZvQ196ZXJvX21lYW5zCmBgYAoKCiMgQ2hvaWNlIHByZWZlcmVuY2UgdGFzayAKIyMgQ2hvaWNlIHByZWZlcmVuY2UgdGFzazogc3VtbWFyeSBzdGF0cwpgYGB7ciByZXdhcmQgc2Vuc2Ugc3VtbWFyeSBzdGF0c30KCiMgUmVhZCBpbiBkYXRhCnJld2FyZFNlbnNlIDwtIHJlYWRfY3N2KCdkYXRhL3Byb2Nlc3NlZC9yZXdhcmRfc2Vuc2l0aXZpdHlfdGFzay5jc3YnKSAKCiNjb21iaW5lIHdpdGggYWdlCnJld2FyZFNlbnNlIDwtIGZ1bGxfam9pbihyZXdhcmRTZW5zZSwgc3ViX2luZm8sIGJ5ID0gYygic3ViSUQiKSkKCiMgc3VtbWFyeSBzdGF0cyBmb3IgYWNjdXJhY3kKb3ZlcmFsbEFjYyA8LSByZXdhcmRTZW5zZSAlPiUgCiAgICBncm91cF9ieShzdWJJRCkgJT4lIAogICAgZmlsdGVyKGFjY3VyYWN5IT0wKSAlPiUgCiAgICBzdW1tYXJpemUobT1tZWFuKGNvcnJlY3QsIG5hLnJtPVQpKSAlPiUgCiAgICB1bmdyb3VwKCkgJT4lIAogICAgc3VtbWFyaXplKG1lYW5BY2N1cmFjeSA9IG1lYW4obSksIHN0ZGV2ID0gc2QobSkpCm92ZXJhbGxBY2MKCiMgbWVhbiA9IDc2LjklCiMgc3RkZXYgPSAxNS4zJQpgYGAKCiMjIE1vZGVsOiBDaG9pY2UgcHJlZmVyZW5jZSB0YXNrIGFjY3VyYWN5CmBgYHtyIGJhbmRpdCBjaG9pY2VzIGFjcm9zcyBieSBhZ2UgaW4gcG9zdC10YXNrIGFzc2Vzc21lbnR9CgojIGZpcnN0LCBmaWx0ZXIgZGF0YSBhbmQgcmVzY2FsZSB2YXJpYWJsZXMKcmV3YXJkU2Vuc2UuZmlsdGVyZWQgPC0gcmV3YXJkU2Vuc2UgJT4lICAKICAgIGZpbHRlcihhY2N1cmFjeSE9MCkKCiMgcmVzY2FsZSB2YXJpYWJsZXMgb2YgYWdlIGFuZCB0aGUgdHJ1ZSBwcm9iYWJpbGl0eSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHR3byBkaXNwbGF5ZWQgYmFuZGl0cyAKcmV3YXJkU2Vuc2UuZmlsdGVyZWQkekFnZSA8LSBzY2FsZShyZXdhcmRTZW5zZS5maWx0ZXJlZCRhZ2UpCnJld2FyZFNlbnNlLmZpbHRlcmVkJHpEaWZmPC0gc2NhbGUocmV3YXJkU2Vuc2UuZmlsdGVyZWQkZGlmZikKCiMgcnVuIG1vZGVsCnJld2FyZFNlbnNlLm1peGVkIDwtIG1peGVkKGNvcnJlY3R+ekRpZmYqekFnZSArICh6RGlmZnxzdWJJRCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPSByZXdhcmRTZW5zZS5maWx0ZXJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gYmlub21pYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJMUlQiKQpyZXdhcmRTZW5zZS5taXhlZCAKYGBgCgoKIyBFeHBsaWNpdCByZXdhcmQga25vd2xlZGdlIHRhc2sgCiMjIEV4cGxpY2l0IHJld2FyZCBrbm93bGVkZ2UgdGFzazogc3VtbWFyeSBzdGF0cwpgYGB7ciBleHBsaWNpdCBrbm93bGVkZ2UgdGFza30KCiMgUmVhZCBpbiBkYXRhCmV4cGxpY2l0S25vdyA8LSByZWFkX2NzdignZGF0YS9wcm9jZXNzZWQvZXhwbGljaXRfa25vd2xlZGdlX3Rhc2suY3N2JykgCgojY29tYmluZSB3aXRoIGFnZQpleHBsaWNpdEtub3cgPC0gZnVsbF9qb2luKGV4cGxpY2l0S25vdywgc3ViX2luZm8sIGJ5ID0gYygic3ViSUQiKSkKCmV4cGxpY2l0S25vdyAlPiUgCiAgZ3JvdXBfYnkoc3ViSUQsIGFnZSkgJT4lIAogIHN1bW1hcml6ZShtID0gbWVhbihlcnJvcikpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIHN1bW1hcml6ZShtZWFuRXJyID0gbWVhbihtLCBuYS5ybT1UKSwgc2QgPSBzZChtLG5hLnJtID0gVCkpCmBgYAoKIyMgTW9kZWw6IEV4cGxpY2l0IHJld2FyZCBrbm93bGVkZ2UgYnkgYWdlIGFuZCB0cnVlIHByb2JhYmlsaXRpZXMKYGBge3IgZXhwbGljaXQga25vd2xlZGdlIG1vZGVsfQojIHByZWRpY3QgdHJpYWwtbGV2ZWwgZXJyb3IgZnJvbSB0cnVlIHByb2JhYmlsaXR5IGFuZCBhZ2UKCiNyZS1zY2FsZSBhZ2UgYW5kIHpUcnVlUHJvYgpleHBsaWNpdEtub3cuZmlsdGVyZWQgPC0gZXhwbGljaXRLbm93ICU+JQogICAgc2VsZWN0KHN1YklELCBhZ2UsIHRydWVQcm9iLCByZXNwb25zZSwgZXJyb3IpICU+JQogICAgZHJvcF9uYSgpCgpleHBsaWNpdEtub3cuZmlsdGVyZWQkekFnZSA8LSBzY2FsZShleHBsaWNpdEtub3cuZmlsdGVyZWQkYWdlKQpleHBsaWNpdEtub3cuZmlsdGVyZWQkelRydWVQcm9iIDwtIHNjYWxlKGV4cGxpY2l0S25vdy5maWx0ZXJlZCR0cnVlUHJvYikKCiMgcnVuIG1vZGVsCmV4cGxpY2l0S25vd19lcnJvcmJ5VHJ1ZVByb2JBZ2UubWl4ZWQgPC0gbWl4ZWQoZXJyb3IgfiB6VHJ1ZVByb2IqekFnZSArICgxfHN1YklEKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGV4cGxpY2l0S25vdy5maWx0ZXJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSAiUyIpIApleHBsaWNpdEtub3dfZXJyb3JieVRydWVQcm9iQWdlLm1peGVkCmBgYAoKIyMgUGxvdDogRXhwbGljaXQgcmV3YXJkIGtub3dsZWRnZQpgYGB7ciBwbG90IGV4cGxpY2l0IGtub3dsZWRnZX0KIyBwbG90IHJlc3BvbnNlIGJ5IGJhbmRpdApleHBsaWNpdEtub3cgJT4lIAogICAgZ2dwbG90KC4sIGFlcyh4PWZhY3Rvcih0cnVlUHJvYiksIHk9cmVzcG9uc2UsIGZpbGw9YWdlX2dyb3VwKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYyhjb2xvcjEsIGNvbG9yMiwgY29sb3IzKSwgbmFtZSA9ICJBZ2UgR3JvdXAiKSArCiAgICB5bGFiKCJSZXBvcnRlZCBSZXdhcmQgUHJvYmFiaWxpdHkiKSArCiAgICB4bGFiKCJUcnVlIFJld2FyZCBQcm9iYWJpbGl0eSIpICsKICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiMTAlIiwgIjMwJSIsICI1MCUiLCAiNzAlIiwgIjkwJSIpKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gYygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KSwgCiAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIjEwJSIsICIyMCUiLCAiMzAlIiwgIjQwJSIsICI1MCUiLCAiNjAlIiwgIjcwJSIsICI4MCUiLCAiOTAlIikpICsKICAgIHZvY190aGVtZSgpCmBgYAo=